package ar.edu.utn.frgp.TPFinalBanco.action.reportes;

import java.util.List;

import ar.edu.utn.frgp.TPFinalBanco.action.BaseAction;
import ar.edu.utn.frgp.TPFinalBanco.model.Cliente;
import ar.edu.utn.frgp.TPFinalBanco.model.Cuenta;
import ar.edu.utn.frgp.TPFinalBanco.model.Movimiento;
import ar.edu.utn.frgp.TPFinalBanco.service.impl.GestionCuentaServiceImpl;
import ar.edu.utn.frgp.TPFinalBanco.service.impl.GestionMovimientosServiceImpl;

import com.opensymphony.xwork2.ActionContext;

public class UltimosMovimientosAction extends BaseAction {

	private static final long serialVersionUID = 1L;

	private Cliente cliente;
	private String cuentaElegida;
	private Cuenta cuenta;
	

	public String execute() throws Exception {
		
		// obtenemos el cliente de la sesión
		cliente = (Cliente) ActionContext.getContext().getSession()
				.get("cliente");
		
		//Obtenemos la cuenta a la cual se va a depositar
		GestionCuentaServiceImpl cuentaService = (GestionCuentaServiceImpl) getContext().getBean("gestionCuentasService");
		cuenta = cuentaService.getCuenta(Integer.parseInt(cuentaElegida));
		
		//Obtenemos los movimientos de esa cuenta
		GestionMovimientosServiceImpl movimientosService = (GestionMovimientosServiceImpl) getContext().getBean("gestionMovimientosService");
		List<Movimiento> movimientos = movimientosService.getMovimientosDeUnaCuenta(Integer.parseInt(cuentaElegida));
		
		//Actualizo la cuenta en la sesión
		List<Cuenta> cuentas = cliente.getCuentas();
		
		for(Cuenta cuentaCliente : cuentas){
			if(cuentaCliente.getNroCuenta().equals(cuenta.getNroCuenta())){
				cuentaCliente.setMovimientos(movimientos);
			}
		}
		cuenta.setMovimientos(movimientos);
		cliente.setCuentas(cuentas);
		ActionContext.getContext().getSession().put("cliente", cliente);
		
		return SUCCESS;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public String getCuentaElegida() {
		return cuentaElegida;
	}

	public void setCuentaElegida(String cuentaElegida) {
		this.cuentaElegida = cuentaElegida;
	}

	public Cuenta getCuenta() {
		return cuenta;
	}

	public void setCuenta(Cuenta cuenta) {
		this.cuenta = cuenta;
	}

}
